Micron Document
🎖️GitЯра🎖️

Node / meshtastic / Meshtastic-Android / files / core / service / src / commonTest / kotlin / org / meshtastic / core / service / DirectRadioControllerImplTest.kt

Displaying Raw • Download

core/service/src/commonTest/kotlin/org/meshtastic/core/service/DirectRadioControllerImplTest.kt renovate/net.java.dev.jna-jna-5.x (5a8f4966) Text, 6.97 KB

T8b949e/*
* Copyright (c) 2026 Meshtastic LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
Tff7b72package T7ee787org.meshtastic.core.service

Tff7b72import T7ee787dev.mokkery.MockMode
Tff7b72import T7ee787dev.mokkery.answering.returns
Tff7b72import T7ee787dev.mokkery.every
Tff7b72import T7ee787dev.mokkery.mock
Tff7b72import T7ee787dev.mokkery.verify
Tff7b72import T7ee787kotlinx.coroutines.async
Tff7b72import T7ee787kotlinx.coroutines.flow.MutableStateFlow
Tff7b72import T7ee787kotlinx.coroutines.flow.first
Tff7b72import T7ee787kotlinx.coroutines.test.runTest
Tff7b72import T7ee787org.meshtastic.core.model.ConnectionState
Tff7b72import T7ee787org.meshtastic.core.model.DataPacket
Tff7b72import T7ee787org.meshtastic.core.model.Node
Tff7b72import T7ee787org.meshtastic.core.model.service.ServiceAction
Tff7b72import T7ee787org.meshtastic.core.repository.CommandSender
Tff7b72import T7ee787org.meshtastic.core.repository.MeshActionHandler
Tff7b72import T7ee787org.meshtastic.core.repository.MeshLocationManager
Tff7b72import T7ee787org.meshtastic.core.repository.MeshRouter
Tff7b72import T7ee787org.meshtastic.core.repository.NodeManager
Tff7b72import T7ee787org.meshtastic.core.repository.NodeRepository
Tff7b72import T7ee787org.meshtastic.core.repository.RadioInterfaceService
Tff7b72import T7ee787org.meshtastic.core.repository.ServiceRepository
Tff7b72import T7ee787org.meshtastic.proto.ClientNotification
Tff7b72import T7ee787org.meshtastic.proto.User
Tff7b72import T7ee787kotlin.test.Test
Tff7b72import T7ee787kotlin.test.assertEquals
Tff7b72import T7ee787kotlin.test.assertNull
Tff7b72import T7ee787kotlin.test.assertSame
Tff7b72import T7ee787kotlin.test.assertTrue

Tff7b72class T56d364DirectRadioControllerImplTest Tb4b4b4{

Tff7b72private Tff7b72val Te6edf3nodeRepositoryTb4b4b4: Te6edf3NodeRepository Tff7b72= Te6edf3mockTb4b4b4(Te6edf3MockModeTb4b4b4.Te6edf3autofillTb4b4b4)
Tff7b72private Tff7b72val Te6edf3commandSenderTb4b4b4: Te6edf3CommandSender Tff7b72= Te6edf3mockTb4b4b4(Te6edf3MockModeTb4b4b4.Te6edf3autofillTb4b4b4)
Tff7b72private Tff7b72val Te6edf3routerTb4b4b4: Te6edf3MeshRouter Tff7b72= Te6edf3mockTb4b4b4(Te6edf3MockModeTb4b4b4.Te6edf3autofillTb4b4b4)
Tff7b72private Tff7b72val Te6edf3actionHandlerTb4b4b4: Te6edf3MeshActionHandler Tff7b72= Te6edf3mockTb4b4b4(Te6edf3MockModeTb4b4b4.Te6edf3autofillTb4b4b4)
Tff7b72private Tff7b72val Te6edf3nodeManagerTb4b4b4: Te6edf3NodeManager Tff7b72= Te6edf3mockTb4b4b4(Te6edf3MockModeTb4b4b4.Te6edf3autofillTb4b4b4)
Tff7b72private Tff7b72val Te6edf3radioInterfaceServiceTb4b4b4: Te6edf3RadioInterfaceService Tff7b72= Te6edf3mockTb4b4b4(Te6edf3MockModeTb4b4b4.Te6edf3autofillTb4b4b4)
Tff7b72private Tff7b72val Te6edf3locationManagerTb4b4b4: Te6edf3MeshLocationManager Tff7b72= Te6edf3mockTb4b4b4(Te6edf3MockModeTb4b4b4.Te6edf3autofillTb4b4b4)

Tff7b72private Tff7b72fun Td2a8ffcreateControllerTb4b4b4(
Te6edf3serviceRepositoryTb4b4b4: Te6edf3ServiceRepository Tff7b72= Te6edf3ServiceRepositoryImplTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3myNodeNumTb4b4b4: Tffa657Int? Tff7b72= T79c0ff1T79c0ff2T79c0ff3T79c0ff4Tb4b4b4,
Tb4b4b4)Tb4b4b4: Te6edf3DirectRadioControllerImpl Tb4b4b4{
Te6edf3every Tb4b4b4{ Te6edf3routerTb4b4b4.Te6edf3actionHandler Tb4b4b4} Te6edf3returns Te6edf3actionHandler
Te6edf3every Tb4b4b4{ Te6edf3nodeManagerTb4b4b4.Te6edf3myNodeNum Tb4b4b4} Te6edf3returns Te6edf3MutableStateFlowTb4b4b4(Te6edf3myNodeNumTb4b4b4)
Tff7b72return Te6edf3DirectRadioControllerImplTb4b4b4(
Te6edf3serviceRepository Tff7b72= Te6edf3serviceRepositoryTb4b4b4,
Te6edf3nodeRepository Tff7b72= Te6edf3nodeRepositoryTb4b4b4,
Te6edf3commandSender Tff7b72= Te6edf3commandSenderTb4b4b4,
Te6edf3router Tff7b72= Te6edf3routerTb4b4b4,
Te6edf3nodeManager Tff7b72= Te6edf3nodeManagerTb4b4b4,
Te6edf3radioInterfaceService Tff7b72= Te6edf3radioInterfaceServiceTb4b4b4,
Te6edf3locationManager Tff7b72= Te6edf3locationManagerTb4b4b4,
Tb4b4b4)
Tb4b4b4}

Tf0883e@Test
Tff7b72fun Td2a8ffconnectionStateAndClientNotificationDelegateToServiceRepositoryTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3serviceRepository Tff7b72= Te6edf3ServiceRepositoryImplTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3controller Tff7b72= Te6edf3createControllerTb4b4b4(Te6edf3serviceRepository Tff7b72= Te6edf3serviceRepositoryTb4b4b4)
Tff7b72val Te6edf3notification Tff7b72= Te6edf3ClientNotificationTb4b4b4(Tb4b4b4)

Te6edf3assertSameTb4b4b4(Te6edf3serviceRepositoryTb4b4b4.Te6edf3connectionStateTb4b4b4, Te6edf3controllerTb4b4b4.Te6edf3connectionStateTb4b4b4)
Te6edf3assertSameTb4b4b4(Te6edf3serviceRepositoryTb4b4b4.Te6edf3clientNotificationTb4b4b4, Te6edf3controllerTb4b4b4.Te6edf3clientNotificationTb4b4b4)

Te6edf3serviceRepositoryTb4b4b4.Te6edf3setConnectionStateTb4b4b4(Te6edf3ConnectionStateTb4b4b4.Te6edf3ConnectingTb4b4b4)
Te6edf3serviceRepositoryTb4b4b4.Te6edf3setClientNotificationTb4b4b4(Te6edf3notificationTb4b4b4)

Te6edf3assertEqualsTb4b4b4(Te6edf3ConnectionStateTb4b4b4.Te6edf3ConnectingTb4b4b4, Te6edf3controllerTb4b4b4.Te6edf3connectionStateTb4b4b4.Te6edf3valueTb4b4b4)
Te6edf3assertSameTb4b4b4(Te6edf3notificationTb4b4b4, Te6edf3controllerTb4b4b4.Te6edf3clientNotificationTb4b4b4.Te6edf3valueTb4b4b4)

Te6edf3controllerTb4b4b4.Te6edf3clearClientNotificationTb4b4b4(Tb4b4b4)

Te6edf3assertNullTb4b4b4(Te6edf3serviceRepositoryTb4b4b4.Te6edf3clientNotificationTb4b4b4.Te6edf3valueTb4b4b4)
Tb4b4b4}

Tf0883e@Test
Tff7b72fun Td2a8ffsendMessageDelegatesToActionHandlerWithLocalNodeNumberTb4b4b4(Tb4b4b4) Tff7b72= Te6edf3runTest Tb4b4b4{
Tff7b72val Te6edf3controller Tff7b72= Te6edf3createControllerTb4b4b4(Te6edf3myNodeNum Tff7b72= T79c0ff4T79c0ff5T79c0ff6Tb4b4b4)
Tff7b72val Te6edf3packet Tff7b72= Te6edf3DataPacketTb4b4b4(Te6edf3to Tff7b72= Te6edf3DataPacketTb4b4b4.Te6edf3ID_BROADCASTTb4b4b4, Te6edf3channel Tff7b72= T79c0ff1Tb4b4b4, Te6edf3text Tff7b72= Ta5d6ff"Ta5d6ffpingTa5d6ff"Tb4b4b4)

Te6edf3controllerTb4b4b4.Te6edf3sendMessageTb4b4b4(Te6edf3packetTb4b4b4)

Te6edf3verify Tb4b4b4{ Te6edf3actionHandlerTb4b4b4.Te6edf3handleSendTb4b4b4(Te6edf3packetTb4b4b4, T79c0ff4T79c0ff5T79c0ff6Tb4b4b4) Tb4b4b4}
Tb4b4b4}

Tf0883e@Test
Tff7b72fun Td2a8ffsendSharedContactEmitsActionAndWaitsForResultTb4b4b4(Tb4b4b4) Tff7b72= Te6edf3runTest Tb4b4b4{
Tff7b72val Te6edf3serviceRepository Tff7b72= Te6edf3ServiceRepositoryImplTb4b4b4(Tb4b4b4)
Tff7b72val Te6edf3controller Tff7b72= Te6edf3createControllerTb4b4b4(Te6edf3serviceRepository Tff7b72= Te6edf3serviceRepositoryTb4b4b4)
Tff7b72val Te6edf3nodeNum Tff7b72= T79c0ff3T79c0ff2T79c0ff1
Tff7b72val Te6edf3user Tff7b72= Te6edf3UserTb4b4b4(Te6edf3id Tff7b72= Te6edf3DataPacketTb4b4b4.Te6edf3nodeNumToDefaultIdTb4b4b4(Te6edf3nodeNumTb4b4b4)Tb4b4b4, Te6edf3long_name Tff7b72= Ta5d6ff"Ta5d6ffRemote NodeTa5d6ff"Tb4b4b4, Te6edf3short_name Tff7b72= Ta5d6ff"Ta5d6ffRNTa5d6ff"Tb4b4b4)
Tff7b72val Te6edf3node Tff7b72= Te6edf3NodeTb4b4b4(Te6edf3num Tff7b72= Te6edf3nodeNumTb4b4b4, Te6edf3user Tff7b72= Te6edf3userTb4b4b4, Te6edf3manuallyVerified Tff7b72= Tff7b72trueTb4b4b4)
Te6edf3every Tb4b4b4{ Te6edf3nodeRepositoryTb4b4b4.Te6edf3getNodeTb4b4b4(Te6edf3DataPacketTb4b4b4.Te6edf3nodeNumToDefaultIdTb4b4b4(Te6edf3nodeNumTb4b4b4)Tb4b4b4) Tb4b4b4} Te6edf3returns Te6edf3node

Tff7b72val Te6edf3emittedAction Tff7b72= Te6edf3async Tb4b4b4{ Te6edf3serviceRepositoryTb4b4b4.Te6edf3serviceActionTb4b4b4.Te6edf3firstTb4b4b4(Tb4b4b4) Tb4b4b4}
Tff7b72val Te6edf3sendResult Tff7b72= Te6edf3async Tb4b4b4{ Te6edf3controllerTb4b4b4.Te6edf3sendSharedContactTb4b4b4(Te6edf3nodeNumTb4b4b4) Tb4b4b4}

Tff7b72val Te6edf3action Tff7b72= Te6edf3emittedActionTb4b4b4.Te6edf3awaitTb4b4b4(Tb4b4b4)
Te6edf3assertTrueTb4b4b4(Te6edf3action Tff7b72is Te6edf3ServiceActionTb4b4b4.Te6edf3SendContactTb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3nodeTb4b4b4.Te6edf3numTb4b4b4, Te6edf3actionTb4b4b4.Te6edf3contactTb4b4b4.Te6edf3node_numTb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3nodeTb4b4b4.Te6edf3userTb4b4b4, Te6edf3actionTb4b4b4.Te6edf3contactTb4b4b4.Te6edf3userTb4b4b4)
Te6edf3assertEqualsTb4b4b4(Te6edf3nodeTb4b4b4.Te6edf3manuallyVerifiedTb4b4b4, Te6edf3actionTb4b4b4.Te6edf3contactTb4b4b4.Te6edf3manually_verifiedTb4b4b4)

Te6edf3actionTb4b4b4.Te6edf3resultTb4b4b4.Te6edf3completeTb4b4b4(Tff7b72trueTb4b4b4)

Te6edf3assertTrueTb4b4b4(Te6edf3sendResultTb4b4b4.Te6edf3awaitTb4b4b4(Tb4b4b4)Tb4b4b4)
Tb4b4b4}

Tf0883e@Test
Tff7b72fun Td2a8ffrequestConfigOperationsDelegateToActionHandlerTb4b4b4(Tb4b4b4) Tff7b72= Te6edf3runTest Tb4b4b4{
Tff7b72val Te6edf3controller Tff7b72= Te6edf3createControllerTb4b4b4(Tb4b4b4)

Te6edf3controllerTb4b4b4.Te6edf3getOwnerTb4b4b4(Te6edf3destNum Tff7b72= T79c0ff1T79c0ff0T79c0ff1Tb4b4b4, Te6edf3packetId Tff7b72= T79c0ff1Tb4b4b4)
Te6edf3controllerTb4b4b4.Te6edf3getConfigTb4b4b4(Te6edf3destNum Tff7b72= T79c0ff1T79c0ff0T79c0ff2Tb4b4b4, Te6edf3configType Tff7b72= T79c0ff2Tb4b4b4, Te6edf3packetId Tff7b72= T79c0ff3Tb4b4b4)
Te6edf3controllerTb4b4b4.Te6edf3getModuleConfigTb4b4b4(Te6edf3destNum Tff7b72= T79c0ff1T79c0ff0T79c0ff3Tb4b4b4, Te6edf3moduleConfigType Tff7b72= T79c0ff4Tb4b4b4, Te6edf3packetId Tff7b72= T79c0ff5Tb4b4b4)
Te6edf3controllerTb4b4b4.Te6edf3getChannelTb4b4b4(Te6edf3destNum Tff7b72= T79c0ff1T79c0ff0T79c0ff4Tb4b4b4, Te6edf3index Tff7b72= T79c0ff6Tb4b4b4, Te6edf3packetId Tff7b72= T79c0ff7Tb4b4b4)
Te6edf3controllerTb4b4b4.Te6edf3getRingtoneTb4b4b4(Te6edf3destNum Tff7b72= T79c0ff1T79c0ff0T79c0ff5Tb4b4b4, Te6edf3packetId Tff7b72= T79c0ff8Tb4b4b4)
Te6edf3controllerTb4b4b4.Te6edf3getCannedMessagesTb4b4b4(Te6edf3destNum Tff7b72= T79c0ff1T79c0ff0T79c0ff6Tb4b4b4, Te6edf3packetId Tff7b72= T79c0ff9Tb4b4b4)
Te6edf3controllerTb4b4b4.Te6edf3getDeviceConnectionStatusTb4b4b4(Te6edf3destNum Tff7b72= T79c0ff1T79c0ff0T79c0ff7Tb4b4b4, Te6edf3packetId Tff7b72= T79c0ff1T79c0ff0Tb4b4b4)

Te6edf3verify Tb4b4b4{ Te6edf3actionHandlerTb4b4b4.Te6edf3handleGetRemoteOwnerTb4b4b4(T79c0ff1Tb4b4b4, T79c0ff1T79c0ff0T79c0ff1Tb4b4b4) Tb4b4b4}
Te6edf3verify Tb4b4b4{ Te6edf3actionHandlerTb4b4b4.Te6edf3handleGetRemoteConfigTb4b4b4(T79c0ff3Tb4b4b4, T79c0ff1T79c0ff0T79c0ff2Tb4b4b4, T79c0ff2Tb4b4b4) Tb4b4b4}
Te6edf3verify Tb4b4b4{ Te6edf3actionHandlerTb4b4b4.Te6edf3handleGetModuleConfigTb4b4b4(T79c0ff5Tb4b4b4, T79c0ff1T79c0ff0T79c0ff3Tb4b4b4, T79c0ff4Tb4b4b4) Tb4b4b4}
Te6edf3verify Tb4b4b4{ Te6edf3actionHandlerTb4b4b4.Te6edf3handleGetRemoteChannelTb4b4b4(T79c0ff7Tb4b4b4, T79c0ff1T79c0ff0T79c0ff4Tb4b4b4, T79c0ff6Tb4b4b4) Tb4b4b4}
Te6edf3verify Tb4b4b4{ Te6edf3actionHandlerTb4b4b4.Te6edf3handleGetRingtoneTb4b4b4(T79c0ff8Tb4b4b4, T79c0ff1T79c0ff0T79c0ff5Tb4b4b4) Tb4b4b4}
Te6edf3verify Tb4b4b4{ Te6edf3actionHandlerTb4b4b4.Te6edf3handleGetCannedMessagesTb4b4b4(T79c0ff9Tb4b4b4, T79c0ff1T79c0ff0T79c0ff6Tb4b4b4) Tb4b4b4}
Te6edf3verify Tb4b4b4{ Te6edf3actionHandlerTb4b4b4.Te6edf3handleGetDeviceConnectionStatusTb4b4b4(T79c0ff1T79c0ff0Tb4b4b4, T79c0ff1T79c0ff0T79c0ff7Tb4b4b4) Tb4b4b4}
Tb4b4b4}

Tf0883e@Test
Tff7b72fun Td2a8ffstopProvideLocationDelegatesToLocationManagerTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3controller Tff7b72= Te6edf3createControllerTb4b4b4(Tb4b4b4)

Te6edf3controllerTb4b4b4.Te6edf3stopProvideLocationTb4b4b4(Tb4b4b4)

Te6edf3verify Tb4b4b4{ Te6edf3locationManagerTb4b4b4.Te6edf3stopTb4b4b4(Tb4b4b4) Tb4b4b4}
Tb4b4b4}

Tf0883e@Test
Tff7b72fun Td2a8ffsetDeviceAddressUpdatesLastAddressAndTransportAddressTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72val Te6edf3controller Tff7b72= Te6edf3createControllerTb4b4b4(Tb4b4b4)

Te6edf3controllerTb4b4b4.Te6edf3setDeviceAddressTb4b4b4(Ta5d6ff"Ta5d6fftcp:192.168.1.1Ta5d6ff"Tb4b4b4)

Te6edf3verify Tb4b4b4{ Te6edf3actionHandlerTb4b4b4.Te6edf3handleUpdateLastAddressTb4b4b4(Ta5d6ff"Ta5d6fftcp:192.168.1.1Ta5d6ff"Tb4b4b4) Tb4b4b4}
Te6edf3verify Tb4b4b4{ Te6edf3radioInterfaceServiceTb4b4b4.Te6edf3setDeviceAddressTb4b4b4(Ta5d6ff"Ta5d6fftcp:192.168.1.1Ta5d6ff"Tb4b4b4) Tb4b4b4}
Tb4b4b4}
Tb4b4b4}

Served by rngit 1.5.0 - Generated in 0.1s